/*
 * 窗口滤波器
 * 
*/

#ifndef __MAF_H__
#define __MAF_H__

#include <stdbool.h>

typedef struct
{
    float* buffer;        // 数据缓冲区
    unsigned int size;    // 窗口大小
    unsigned short index; // 当前数据位置
    unsigned short count; // 已存数据数量
    float sum;            // 窗口内数据和
}WHT_MAF_t;

typedef struct
{
    /* 初始化滑动窗口滤波器 */
    void (*init)(WHT_MAF_t* filter, float* buffer, unsigned short windowSize);
    /* 应用滤波器处理新数据点 */
    float (*apply_update)(WHT_MAF_t* filter, float new_value);
    /* 获取当前输出值（不更新状态） */
    float (*get_current_output)(const WHT_MAF_t *filter);
}WHT_MAF_OPS_t;

extern const WHT_MAF_OPS_t WHT_MAF_OPS;

#endif /* __LPF1_H__ */
